home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_04
/
8n04073a
< prev
next >
Wrap
Text File
|
1990-03-18
|
6KB
|
151 lines
*****Listing 2*****
1: /*
2: * MDBMAIN.C (Static Array Only Version)
3: *
4: * Program: Mini-Database
5: * Written by: Leor Zolman
6: * Module: Main Program Module
7: *
8: * Program Description:
9: * This system is an "introductory showcase" of
10: * C programming techniques for File I/O-related
11: * applications. Areas of focus include:
12: * Static and Dynamic Array Allocation
13: * Text-based and Binary-based Disk Data Storage
14: * Elementary user-interface and error-handling
15: *
16: * Compile & Link (Turbo C):
17: * tcc mdbmain.c mdbedit.c mdbutil.c
18: * {mdbftxt.c or mdbfbin.c}
19: */
20:
21: #include <stdio.h>
22: #include <stdlib.h>
23:
24: #define MAIN_MODULE 1 /* force data definitions */
25: #include "mdb.h"
26:
27:
28: #define CREATE 1 /* Main menu action codes */
29: #define OPEN 2
30: #define EDIT 3
31: #define SAVE 4
32: #define BAKUP 5
33: #define CLOSE 6
34: #define ABANDON 7
35: #define QUIT 8
36:
37: static struct menu_item main_menu[] =
38: {
39: {CREATE, "Create New Database"},
40: {OPEN, "Select Existing Database to Work With"},
41: {EDIT, "Edit Database Records"},
42: {SAVE, "Write Database to Disk"},
43: {BAKUP, "Backup Database to Floppies"},
44: {CLOSE, "Close the Database"},
45: {ABANDON, "Abandon Changes to the Current Database"},
46: {QUIT, "Quit"},
47: {NULL} /* End of list */
48: };
49:
50:
51: main(int argc, char **argv)
52: {
53: char db_name[150];
54: int db_active = FALSE; /* No Database currently open */
55: FILE *fp;
56:
57: while (1)
58: {
59: switch(do_menu(main_menu, "Main Menu"))
60: {
61: case CREATE:
62: if (db_active)
63: goto still_open;
64: printf("Name for new Database? ");
65: gets(db_name);
66: if ((fp = fopen(db_name,"r")) != NULL)
67: {
68: printf("A file by that name already exists.\n");
69: fclose(fp);
70: break;
71: }
72: max_recs = MAX_RECS;
73: db_active = TRUE;
74: n_recs = 0;
75: printf("Database created; entering EDIT mode:\n");
76: /* After creating, fall through to EDIT */
77:
78: case EDIT:
79: if (!db_active)
80: goto inactive;
81: edit_db(); /* Edit records in memory */
82: break;
83:
84: case OPEN:
85: if (db_active)
86: {
87: still_open: printf("Please close the current Database.\n");
88: break;
89: }
90: printf("Database Name? ");
91: gets(db_name);
92: if ((n_recs = read_db(db_name)) != NULL)
93: {
94: printf("\nLoaded %d Record(s).\n", n_recs);
95: db_active = TRUE;
96: }
97:
98: edit_db();
99: break;
100:
101: case BAKUP:
102: if (!db_active)
103: goto inactive;
104: backup_db(); /* Perform backup */
105: break;
106:
107: case CLOSE:
108: if (!db_active)
109: goto inactive;
110: write_db(db_name); /* write to disk */
111: free_up();
112: db_active = FALSE;
113: break;
114:
115: case SAVE:
116: if (!db_active)
117: goto inactive;
118: write_db(db_name); /* write to disk */
119: break;
120:
121: case ABANDON:
122: if (!db_active)
123: {
124: inactive: printf("Please select a Database first!\n");
125: break;
126: }
127: free_up();
128: db_active = FALSE;
129: break;
130:
131: case QUIT:
132: if (db_active)
133: goto still_open;
134: exit(0);
135: }
136: }
137: }
138:
139: /*
140: * Function: backup_db
141: * Purpose: Backup current Database to floppies
142: * Parameters: None
143: * Return Value: None
144: */
145:
146: void backup_db() /* Backup module */
147: {}
148:
149: